home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************************
- * NCSA HDF *
- * Software Development Group *
- * National Center for Supercomputing Applications *
- * University of Illinois at Urbana-Champaign *
- * 605 E. Springfield, Champaign IL 61820 *
- * *
- * For conditions of distribution and use, see the accompanying *
- * hdf/COPYING file. *
- * *
- ****************************************************************************/
-
- /* $Id: cnbit.h,v 1.16 1997/10/24 21:00:20 koziol Exp $ */
-
- /*-----------------------------------------------------------------------------
- * File: cnbit.h
- * Purpose: Header file for N-bit encoding information.
- * Dependencies: should only be included from hcompi.h
- * Invokes: none
- * Contents: Structures & definitions for N-bit encoding.
- * Structure definitions:
- * Constant definitions:
- *---------------------------------------------------------------------------*/
-
- /* avoid re-inclusion */
- #ifndef __CNBIT_H
- #define __CNBIT_H
-
- #if defined c_plusplus || defined __cplusplus
- extern "C"
- {
- #endif /* c_plusplus || __cplusplus */
-
- /*
- ** from cnbit.c
- */
-
- extern int32 HCPcnbit_stread
- (accrec_t * rec);
-
- extern int32 HCPcnbit_stwrite
- (accrec_t * rec);
-
- extern int32 HCPcnbit_seek
- (accrec_t * access_rec, int32 offset, int origin);
-
- extern int32 HCPcnbit_inquire
- (accrec_t * access_rec, int32 *pfile_id, uint16 *ptag, uint16 *pref,
- int32 *plength, int32 *poffset, int32 *pposn, int16 *paccess,
- int16 *pspecial);
-
- extern int32 HCPcnbit_read
- (accrec_t * access_rec, int32 length, void * data);
-
- extern int32 HCPcnbit_write
- (accrec_t * access_rec, int32 length, const void * data);
-
- extern intn HCPcnbit_endaccess
- (accrec_t * access_rec);
-
- #if defined c_plusplus || defined __cplusplus
- }
- #endif /* c_plusplus || __cplusplus */
-
- /* size of the N-bit buffer */
- #define NBIT_BUF_SIZE (MAX_NT_SIZE*64)
- /* size of the N-bit mask buffer (same as buffer size for now) */
- #define NBIT_MASK_SIZE (MAX_NT_SIZE)
-
- typedef struct
- { /* structure to hold bit vector info */
- intn offset, /* offset of the bit information */
- length; /* number of bits in the information */
- uint8 mask; /* mask for this bit vector */
- }
- nbit_mask_info_t;
-
- /* N-bit [en|de]coding information */
- typedef struct
- {
- int32 nt; /* number type of data we are encoding */
- intn nt_size; /* size of the number-type in the file */
- intn fill_one; /* whether to fill with 1's or not (0's) */
- intn sign_ext; /* whether to sign extend or not */
- uint8 buffer[NBIT_BUF_SIZE]; /* buffer for expanding n-bit data in */
- intn buf_pos; /* current offset in the expansion buffer */
- intn mask_off, /* offset of the bit to start masking with */
- mask_len; /* number of bits to mask */
- int32 offset; /* offset in the file in terms of bytes */
- uint8 mask_buf[NBIT_MASK_SIZE]; /* buffer to hold the bitmask */
- nbit_mask_info_t mask_info[NBIT_MASK_SIZE]; /* information about the mask */
- intn nt_pos; /* current byte to read or write */
- }
- comp_coder_nbit_info_t;
-
- #ifndef CNBIT_MASTER
- extern funclist_t cnbit_funcs; /* functions to perform N-bit encoding */
- #else
- funclist_t cnbit_funcs =
- { /* functions to perform N-bit encoding */
- HCPcnbit_stread,
- HCPcnbit_stwrite,
- HCPcnbit_seek,
- HCPcnbit_inquire,
- HCPcnbit_read,
- HCPcnbit_write,
- HCPcnbit_endaccess
- };
- #endif
-
- #endif /* __CNBIT_H */
-